package com.ref.demo8;

import java.lang.reflect.Field;

public class SqlGenerate {
    public String generateSelect(Class<?> clz){
        // 获取表中的所有字段
        Field[] declaredFields = clz.getDeclaredFields();

        // 拼接sql语句
        StringBuilder sql = new StringBuilder();
        sql.append("select ");

        // 循环遍历所有字段
        for (Field field : declaredFields){
//            sql.append(field.getName());
            // 获取字段名
            String name = field.getName();

            // 判断字段名中是否有大写字母
            if (field.getName().matches(".*[A-Z].*")) {
                sql.append(field.getName()).append(" as ");
            }

            // 使用正则表达式把所有大写字母转换成下划线加小写字母
            String lowerCase = name.toLowerCase();

            sql.append(lowerCase).append(",");
        }

        // 去除最后一个逗号
        sql.deleteCharAt(sql.length() - 1);

        sql.append(" from ");

        // 把表名全部转换成小写
        sql.append(clz.getSimpleName().toLowerCase());

        return sql.toString();
    }
}
